home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue59 / Arch / Sample / UnitFrameResultSetBase.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  2000-06-05  |  2.6 KB  |  92 lines

  1. unit UnitFrameResultSetBase;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   UnitObjectResultSetBase, Menus, Grids, DBGrids, Db, ImgList, ActnList,
  8.   UnitFormBase;
  9.  
  10. type
  11.   TFrameResultSetBase = class(TFrame)
  12.     ActionListFrameResultSetBase: TActionList;
  13.     ActionFrameResultSetBaseOpen: TAction;
  14.     ImageListFrameResultSetBase: TImageList;
  15.     DataSourceFrameResultSetBase: TDataSource;
  16.     DBGridFrameResultSetBase: TDBGrid;
  17.     PopupMenuFrameResultSetBase: TPopupMenu;
  18.     Open1: TMenuItem;
  19.     procedure ActionFrameResultSetBaseOpenUpdate(Sender: TObject);
  20.     procedure ActionFrameResultSetBaseOpenExecute(Sender: TObject);
  21.   private
  22.     FMovingColumn: boolean;
  23.  
  24.     FResultSetObject: TObjectResultSetBase;
  25.  
  26.     procedure SetResultSetObject(aResultSetObject: TObjectResultSetBase);
  27.   protected
  28.       function GetClassOfFormToBeOpened: TFormBaseClass; virtual;
  29.       function GetResultSetClass: TObjectResultSetClass; virtual; abstract;
  30.   public
  31.     constructor Create(Owner: TComponent); override;
  32.     destructor Destroy; override;
  33.     property ResultSetObject: TObjectResultSetBase read FResultSetObject write SetResultSetObject;
  34.     procedure OpenEntityForm;
  35.   end;
  36.  
  37. implementation
  38.  
  39. {$R *.DFM}
  40.  
  41. { TFrameResultSetBase }
  42.  
  43. procedure TFrameResultSetBase.SetResultSetObject(
  44.   aResultSetObject: TObjectResultSetBase);
  45. begin
  46.   if (ResultSetObject <> aResultSetObject) then begin
  47.     FResultSetObject := aResultSetObject;
  48.     if (ResultSetObject = NIL) then
  49.       DataSourceFrameResultSetBase.DataSet := NIL
  50.     else
  51.       DataSourceFrameResultSetBase.DataSet := ResultSetObject.Query;
  52.   end; // then begin
  53. end;
  54.  
  55. procedure TFrameResultSetBase.ActionFrameResultSetBaseOpenUpdate(
  56.   Sender: TObject);
  57. begin
  58.   ActionFrameResultSetBaseOpen.Enabled := not ResultSetObject.IsEmpty;
  59. end;
  60.  
  61. function TFrameResultSetBase.GetClassOfFormToBeOpened: TFormBaseClass;
  62. begin
  63.   Result := NIL;
  64. end;
  65.  
  66. constructor TFrameResultSetBase.Create;
  67. begin
  68.   inherited;
  69.   ResultSetObject := GetResultSetClass.FetchReference(Self, TFormBase.NewInteger) as TObjectResultSetBase;
  70. end;
  71.  
  72. destructor TFrameResultSetBase.Destroy;
  73. begin
  74.   ResultSetObject.FreeReference(Self);
  75.   ResultSetObject := NIL;
  76.   inherited;
  77. end;
  78.  
  79. procedure TFrameResultSetBase.ActionFrameResultSetBaseOpenExecute(
  80.   Sender: TObject);
  81. begin
  82.   OpenEntityForm;
  83. end;
  84.  
  85. procedure TFrameResultSetBase.OpenEntityForm;
  86. begin
  87.   if (GetClassOfFormToBeOpened <> NIL) then
  88.     GetClassOfFormToBeOpened.FetchForm(ResultSetObject.SelectedKey).ShowForm;
  89. end;
  90.  
  91. end.
  92.